package com.itheima.pattern.t11_flyweight.demo1;

/**
 * 享元模式
 * 运用共享技术来有效地支持大量细粒度对象的复用。
 * 它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销，从而提高系统资源的利用率。
 */
public class TestDemo {

    public static void main(String[] args) {
        // 获取I图形对象
        AbstractBox box1 = BoxFactory.getInstance().getShap("I");
        box1.display("灰色");

        // 获取L图形对象
        AbstractBox box2 = BoxFactory.getInstance().getShap("L");
        box2.display("绿色");

        // 获取O图形对象
        AbstractBox box3 = BoxFactory.getInstance().getShap("O");
        box3.display("灰色");

        // 获取O图形对象
        AbstractBox box4 = BoxFactory.getInstance().getShap("O");
        box4.display("红色");

        System.out.print("两次获取到的O图形对象是否是同一个对象：");
        System.out.println(box3 == box4);
    }
}
